home *** CD-ROM | disk | FTP | other *** search
/ FM Towns: Free Software Collection 9 / FM Towns Free Software Collection 9.iso / t_os / tool / tpsc32k / src / resolve.c < prev    next >
Encoding:
C/C++ Source or Header  |  1994-11-16  |  2.3 KB  |  101 lines

  1. /*
  2.         TPSC256&TPSC32K用 外部Shell
  3.         
  4.         ぼかしユ-ティリティ
  5.         
  6. */
  7.  
  8. #define EGBSIZE        1536    // EGB用ワ-クサイズ
  9. #define MOSSIZE        4096    // マウス用ワ-クサイズ
  10. #define BOOL        int        // 論理判断の型宣言
  11. #define TRUE        1        // 真
  12. #define FALSE        0        // 偽
  13. #define MENUPAGE    0        // メニュ-ペ-ジ番号
  14. #define DRAWPAGE    0        // 描画ペ-ジ番号
  15. #define SCREEN256    12        // 画面モ-ド
  16. #define SCREEN32K    17        // 画面モ-ド
  17. #define DRAWW256    640        // 処理画面横サイズ
  18. #define DRAWW32K    512        // 処理画面横サイズ
  19. #define DRAWHIDE    480        // 処理画面縦サイズ
  20.  
  21.  
  22. #include <stdio.h>
  23. #include <stdlib.h>
  24. #include <string.h>
  25. #include <malloc.h>
  26. #include <math.h>
  27. #include <egb.h>
  28. #include <mos.h>
  29. #include <loader.h>            // コプロセス定義ファイル
  30.  
  31. char EGB_work[EGBSIZE];        // EGBワ-クエリア
  32. char MOS_work[MOSSIZE];        // マウスワ-クエリア
  33.  
  34. void resolve(x1,y1,x2,y2)
  35. int x1,y1,x2,y2;
  36. {
  37.     int n,worksize,rx1,ry1,rx2,ry2;
  38.     struct {
  39.         unsigned short    pn;
  40.         short            xy[4][2];
  41.     } para;
  42.     char *work;
  43.     
  44.     if((work=(char *)malloc(512*1024))!=NULL ) {
  45.         para.pn = 4;
  46.         para.xy[0][0] = x1;    para.xy[0][1] = y1;
  47.         para.xy[1][0] = x1;    para.xy[1][1] = y2;
  48.         para.xy[2][0] = x2;    para.xy[2][1] = y2;
  49.         para.xy[3][0] = x2;    para.xy[3][1] = y1;
  50.         n = 0;
  51.         rx1 = x1;    ry1 = y1;
  52.         rx2 = x2;    ry2 = y2;
  53.         EGB_region(EGB_work,&n,&worksize,&rx1,&ry1,&rx2,&ry2,(char*)¶);
  54.  
  55.         EGB_resolve(EGB_work,work);
  56.         free(work);
  57.     }
  58. }
  59.  
  60. main()
  61. {
  62.     ADDRESS temp;
  63.     int i,x,y;
  64.     int page[2];
  65.     
  66.     pcl_get_dta(&temp);
  67.     
  68.     /* 画面・マウスの初期化 */
  69.     EGB_getResolution(&page[0], &page[1]);
  70.     if( page[0] == SCREEN256 || 
  71.         page[0] == SCREEN32K ) {
  72.         
  73.         EGB_resolution(EGB_work,DRAWPAGE,page[0]|0x40);        // Page0 Init
  74.         EGB_displayPage(EGB_work,0,1);                        // 1page view
  75.         MOS_start(MOS_work,MOSSIZE);                        // マウス初期化
  76.         MOS_resolution(DRAWPAGE,page[0]);
  77.     
  78.         EGB_writePage(EGB_work,DRAWPAGE);    // 描画ペ-ジを指定
  79.         EGB_paintMode(EGB_work,0x22);        // ペイントモ-ドを指定
  80.         if( page[0] == SCREEN256 ) {
  81.             EGB_color(EGB_work,0,255);            // ドットの色を指定
  82.         } else {
  83.             EGB_color(EGB_work,0,0x7fff);        // ドットの色を指定
  84.         }
  85.         EGB_writeMode(EGB_work,0);
  86.     
  87.         /* 処理開始 */
  88.         if( page[0] == SCREEN256 ) {
  89.             resolve(0,0,DRAWW256-1,DRAWHIDE-1);
  90.         } else {
  91.             resolve(0,0,DRAWW32K-1,DRAWHIDE-1);
  92.         }
  93.     
  94.         /* 子プロセスの終了処理 */
  95.         MOS_end();
  96.     }
  97.     
  98.     pcl_exit(0);
  99.     return (0);
  100. }
  101.